package com.frank.oj.service.entity.judge;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.frank.model.entity.judge.Judge;
import com.frank.oj.model.vo.ContestScrollBoardSubmissionVO;
import com.frank.oj.model.vo.JudgeVO;
import com.frank.oj.model.vo.ProblemCountVO;

import java.util.Date;
import java.util.List;

/**
 * @author frank
 * @Date 2024/1/25
 */
public interface JudgeEntityService extends IService<Judge> {
    List<ProblemCountVO> getProblemListCount(List<Long> pidList);

    IPage<JudgeVO> getCommonJudgeList(Integer limit, Integer currentPage, String uid, String searchPid, Integer searchStatus, String searchUsername, Boolean completeProblemID, Long gid);

    int getTodayJudgeNum();

    ProblemCountVO getProblemCount(Long id, Long gid);

    ProblemCountVO getContestProblemCount(Long pid, Long id, Long cid, Date startTime, Date sealRankTime, List<String> superAdminUidList);

    IPage<JudgeVO> getContestJudgeList(Integer limit, Integer currentPage, String displayId, Long searchCid, Integer searchStatus, String searchUsername, String uid, Boolean beforeContestSubmit, String rule, Date startTime, Date sealRankTime, String uid1, Boolean completeProblemID);

    void failToUseRedisPublishJudge(Long judgeId, Long pid, boolean isContest);

    List<ContestScrollBoardSubmissionVO> getContestScrollBoardSubmission(Long cid, List<String> removeUidList);
}
